Portable Serialization এবং Identified DataSerializable ব্যবহার

Database Tutorials - হ্যাজেলকাস্ট  (Hazelcast) Hazelcast Serialization |
258
258

Hazelcast ডিস্ট্রিবিউটেড সিস্টেমে ডেটা ট্রান্সফার এবং সংরক্ষণের জন্য Serialization ব্যবহার করে। Serialization হল এমন একটি প্রক্রিয়া, যার মাধ্যমে অবজেক্টের স্টেটকে একটি নির্দিষ্ট ফরম্যাটে রূপান্তরিত করা হয়, যাতে তা নেটওয়ার্কের মাধ্যমে পাঠানো বা ডিস্কে সংরক্ষিত করা যেতে পারে। Hazelcast দুটি প্রধান Serialization মেকানিজম প্রদান করে: Portable Serialization এবং Identified DataSerializable


1. Portable Serialization

Portable Serialization হল Hazelcast এর একটি নতুন Serialization ফরম্যাট, যা high performance এবং flexibility নিশ্চিত করে। এটি ডেটা সিরিয়ালাইজেশন এবং ডিসিরিয়ালাইজেশন প্রক্রিয়াকে দ্রুত এবং কম জায়গায় সম্পন্ন করতে সক্ষম।

Portable Serialization এর বৈশিষ্ট্য:

  • কমপ্যাক্ট ফরম্যাট: Portable Serialization ফরম্যাট খুবই ছোট, যার ফলে এটি নেটওয়ার্ক এবং ডিস্ক ট্রান্সফারের জন্য উপযুক্ত।
  • ফাস্ট পারফরম্যান্স: এটি দ্রুত Serialization এবং Deserialization সম্পন্ন করতে পারে।
  • মাল্টিপল ভার্সন সমর্থন: Portable ফরম্যাটটি একাধিক ভার্সনকে সমর্থন করে, যা ক্লাসের আপডেট এবং পরিবর্তন করলে আগে সংরক্ষিত ডেটা নষ্ট হবে না।
  • কমপ্লেক্স ডেটা মডেল: এটি জটিল অবজেক্ট গ্রাফকে সঠিকভাবে প্রসেস করতে সক্ষম, যা সাধারণ Java Serialization এর তুলনায় অনেক দ্রুত।

Portable Serialization ব্যবহারের উদাহরণ:

প্রথমে Portable অবজেক্ট তৈরি করতে হয় এবং তাকে DataSerializableFactory দিয়ে রেজিস্টার করতে হয়। এরপর Hazelcast ক্লাস্টার এই অবজেক্টকে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করতে পারে।

import com.hazelcast.nio.serialization.Portable;
import com.hazelcast.nio.serialization.PortableReader;
import com.hazelcast.nio.serialization.PortableWriter;
import com.hazelcast.nio.serialization.StreamSerializer;

public class MyPortableObject implements Portable {

    private int id;
    private String name;

    public MyPortableObject() {}

    public MyPortableObject(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public int getClassId() {
        return 1; // Unique class identifier
    }

    @Override
    public void writePortable(PortableWriter writer) {
        writer.writeInt("id", id);
        writer.writeUTF("name", name);
    }

    @Override
    public void readPortable(PortableReader reader) {
        id = reader.readInt("id");
        name = reader.readUTF("name");
    }

    // Getters and setters
}

এখন, PortableSerialization ফরম্যাটটি ব্যবহার করতে SerializationConfig কনফিগার করতে হবে Hazelcast এর মধ্যে।

SerializationConfig config = new SerializationConfig();
config.addPortableFactory(1, new MyPortableFactory()); // Register Portable class

HazelcastInstance hz = Hazelcast.newHazelcastInstance();
hz.getConfig().setSerializationConfig(config);

2. Identified DataSerializable

Identified DataSerializable হল Hazelcast এর পুরনো Serialization ফরম্যাট, যেখানে DataSerializable ইন্টারফেসটি ব্যবহার করা হয়। এটি একটি কাস্টম Serialization প্রক্রিয়া, যা অনেক দ্রুত এবং কমপ্লেক্স অবজেক্টের জন্য সুবিধাজনক।

Identified DataSerializable এর বৈশিষ্ট্য:

  • ফাস্ট এবং কমপ্যাক্ট: DataSerializable দ্রুত Serialization এবং Deserialization সম্পন্ন করে, এবং এতে একাধিক ফিল্ডের মধ্যে কোনো অপ্রয়োজনীয় তথ্য থাকে না।
  • Class ID এর মাধ্যমে সনাক্তকরণ: প্রতিটি ক্লাসের একটি ইউনিক class ID থাকে, যা Hazelcast কে অবজেক্ট সনাক্ত করতে সাহায্য করে।
  • পরিবর্তনযোগ্য স্ট্রাকচার: IdentifiedDataSerializable কাস্টম Serialization পদ্ধতি ব্যবহারের মাধ্যমে আপনি আপনার অবজেক্টের ফিল্ড সংরক্ষণ করতে পারেন।

IdentifiedDataSerializable ব্যবহারের উদাহরণ:

import com.hazelcast.nio.serialization.IdentifiedDataSerializable;
import com.hazelcast.nio.serialization.DataSerializable;
import com.hazelcast.nio.serialization.ObjectDataInput;
import com.hazelcast.nio.serialization.ObjectDataOutput;
import java.io.IOException;

public class MyDataSerializableObject implements IdentifiedDataSerializable {

    private int id;
    private String name;

    public MyDataSerializableObject() {}

    public MyDataSerializableObject(int id, String name) {
        this.id = id;
        this.name = name;
    }

    @Override
    public int getFactoryId() {
        return 1; // Factory ID for this class
    }

    @Override
    public int getClassId() {
        return 1; // Unique class ID
    }

    @Override
    public void writeData(ObjectDataOutput out) throws IOException {
        out.writeInt(id);
        out.writeUTF(name);
    }

    @Override
    public void readData(ObjectDataInput in) throws IOException {
        id = in.readInt();
        name = in.readUTF();
    }

    // Getters and setters
}

Hazelcast ক্লাস্টারে IdentifiedDataSerializable ফরম্যাটটি ব্যবহারের জন্য আপনাকে একটি DataSerializableFactory রেজিস্টার করতে হবে।

HazelcastInstance hz = Hazelcast.newHazelcastInstance();
hz.getConfig().getSerializationConfig().addDataSerializableFactory(1, new MyDataSerializableFactory());

Portable Serialization এবং Identified DataSerializable এর মধ্যে পার্থক্য

বৈশিষ্ট্যPortable SerializationIdentified DataSerializable
পারফরম্যান্সদ্রুত, কম জায়গায় ডেটা সংরক্ষণ এবং ট্রান্সফারউচ্চ পারফরম্যান্স, তবে Portable এর তুলনায় কম কার্যকর
ফ্লেক্সিবিলিটিএকাধিক ভার্সন সমর্থন করেসীমিত ভার্সন সমর্থন
ডেটা সংরক্ষণ ফরম্যাটছোট, কমপ্যাক্টডেটা সিরিয়ালাইজেশন ফরম্যাটের তুলনায় অনেক বেশি বড়
ভার্সনিং সাপোর্টহ্যাঁ, Portable অনেক সহজে ভার্সন আপডেট করতে পারেসীমিত ভার্সনিং সহ কাজ করা যায়
ইউনিটসাইজ ছোট এবং অপটিমাইজডকাস্টম Serialization, কিছুটা বড় সাইজ

সারাংশ

  • Portable Serialization আধুনিক এবং দ্রুত Serialization ফরম্যাট, যা কমপ্যাক্ট এবং উচ্চ পারফরম্যান্সে কাজ করতে সক্ষম।
  • Identified DataSerializable Hazelcast এর পুরনো Serialization ফরম্যাট, যা কাস্টম Serialization এবং উচ্চ পারফরম্যান্স প্রদান করে, তবে Portable এর তুলনায় কিছু সীমাবদ্ধতা থাকতে পারে।

Hazelcast ক্লাস্টারে ডেটা দ্রুত এবং কার্যকরীভাবে ট্রান্সফার করার জন্য Portable ফরম্যাটটি উপযুক্ত, তবে Identified DataSerializable এখনও অনেক ডিস্ট্রিবিউটেড সিস্টেমে ব্যবহৃত হয়, যেখানে পারফরম্যান্স একটি প্রধান দৃষ্টিভঙ্গি।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion